package com.company.ThreadsCommunication;

/**
 * 作者：13687
 * 日期：2017/6/5
 * 项目：ThreadPoolsDemo
 * 描述: 共享变量
 */
public class NumberHolder {
	private int number;

	public synchronized void increase() {
		/**
		 * 每次获取监视器 都需要判断条件
		 * */
		while (0 != number) {
			try {
				wait();
			}
			catch (InterruptedException e) {
				e.printStackTrace();
			}
		}

		// 能执行到这里说明已经被唤醒
		// 并且number为0
		number++;
		System.out.println(number);

		// 通知在等待的线程
		notify();
	}

	public synchronized void decrease() {
//		if (0 == number) {
		while (0 == number) {
			try {
				wait();
			}
			catch (InterruptedException e) {
				e.printStackTrace();
			}

		}

		// 能执行到这里说明已经被唤醒
		// 并且number不为0
		number--;
		System.out.println(number);
		notify();
	}
}
